#ifndef SYNCBASEAPI60_H
#define SYNCBASEAPI60_H

#include <QtCore/qglobal.h>
#include "sys_def.h"

#if defined(SYNCBASEAPI60_LIBRARY)
#  define SYNCBASEAPI60SHARED_EXPORT Q_DECL_EXPORT
#else
#  define SYNCBASEAPI60SHARED_EXPORT Q_DECL_IMPORT
#endif

#define API_EXPORT extern "C" SYNCBASEAPI60SHARED_EXPORT

class SYNCBASEAPI60SHARED_EXPORT SyncBaseApi60
{

public:
    SyncBaseApi60();
};

//网络方式数据接口
typedef void* HSYNCBASE;                            //数据库句柄
typedef void* HSTMT;                                //查询结果集句柄
/********************************************************************
功能描述：创建数据库实例，必须在其它函数使用前调用
输入参数：无
输出参数：无
返 回 值：!=NULL - 数据库实例句柄
          NULL - 失败
********************************************************************/
API_EXPORT HSYNCBASE sync_CreateDB(void);

/********************************************************************
功能描述：释放创建的数据库实例，必须和sync_CreateDB函数对应使用
输入参数：hDB - 数据库句柄
输出参数：无
返 回 值：1 - 成功
         0 - 失败
********************************************************************/
API_EXPORT int sync_DestoryDB(HSYNCBASE hDB);

/********************************************************************
功能描述：连接服务器，必须在调用其它取数据函数前调用
输入参数：hDB - 数据库句柄
             pszServerNameOrAddr - 路由服务器IP或计算机名
             nPort - 服务端口号,默认8005
输出参数：无
返 回 值：1 - 成功
         0 - 失败
********************************************************************/
API_EXPORT int sync_Open(HSYNCBASE hDB, const char *pszServerNameOrAddr, int nPort);

/********************************************************************
功能描述：判断是否已连接服务
输入参数：hDB -  数据库句柄
输出参数：无
返 回 值：1 - 连接
         0 - 断开
********************************************************************/
API_EXPORT int sync_IsOpened(HSYNCBASE hDB);

/********************************************************************
功能描述：断开与服务连接
输入参数：hDB - 数据库句柄
输出参数：无
返 回 值：1 - 成功
         0 - 失败
********************************************************************/
API_EXPORT int sync_Close(HSYNCBASE hDB);

/********************************************************************
功能描述：用户登录
输入参数：hDB - 数据库句柄
          szUser - 用户名
          szPassword - 密码
输出参数：无
返 回 值：1 - 成功
          0 - 失败
********************************************************************/
API_EXPORT int sync_Login(HSYNCBASE hDB, const char *szUser, const char *szPassword);

/********************************************************************
功能描述：用户注销
输入参数：hDB - 数据库句柄
输出参数：无
返 回 值：1 - 成功
        0 - 失败
********************************************************************/
API_EXPORT int sync_Logout(HSYNCBASE hDB);

/********************************************************************
功能描述：获取当前登录用户权限
输入参数：hDB - 数据库句柄
        UserRight - 用户权限
输出参数：无
返 回 值：1 - 成功
        0 - 失败
********************************************************************/
API_EXPORT int sync_GetLoginRight(HSYNCBASE hDB, USER_RIGHT  *pUserRight);

/********************************************************************
功能描述：释放查询结果集的内存资源，所有查询结束后必须调用该函数，
          否则会造成内存不释放
输入参数：hStmt ? 查询结果集句柄
输出参数：无
返 回 值：无
*********************************************************************/
API_EXPORT void sync_FreeQueryStmt(HSTMT *hStmt);

/********************************************************************
功能描述：打开测点信息查询
输入参数：hDB ? 数据库句柄
        szBaseName ? 数据库名称
        szNameMask ? 名称过滤
        szComentMask ?描述过滤
        nNodeId - 指定某目录节点ID, 为0表示任意节点
输出参数：无
返 回 值：hStmt ? 查询结果集句柄
*********************************************************************/
API_EXPORT HSTMT sync_OpenTagQuery(HSYNCBASE hDB, \
                    const char *szBaseName, \
                      const char *szNameMask, \
                      const char *szComentMask, \
                      int nNodeId);

/********************************************************************
功能描述：读取上次枚举查询条件的测点信息
输入参数：hStmt ? 查询结果集句柄
输出参数：pTag ? 测点参数
返 回 值：>0 ?成功读取的测点数
          0  ?查询结束
*********************************************************************/
API_EXPORT int sync_ReadTag(HSTMT hStmt, TAG_INFO *pTag);

/********************************************************************
功能描述：关闭上次测点枚举查询
输入参数：hStmt ? 查询结果集句柄
输出参数：无
返 回 值：1 ?成功
         0 ?失败
*********************************************************************/
API_EXPORT int sync_CloseTagQuery(HSTMT hStmt);

/********************************************************************
功能描述：通过库名称获取库ID
输入参数：hDB ? 数据库句柄
             szBaseName ? 库名称
          nLen - 库名称长度
输出参数：无
返 回 值：>=0 ? 测点索引
          <0 ? 失败
********************************************************************/
API_EXPORT int sync_GetBaseIdByName(HSYNCBASE hDB, const char *szBaseName, int nLen);

/********************************************************************
功能描述：通过位号名称获取ID
输入参数：hDB   ? 数据库句柄
          BaseId  - 数据库ID，为-1时，表示点名参数格式为：库名@点名
             szName ? 测点名称
          nLen   - 测点名称长度
输出参数：无
返 回 值：>=0   ? 测点索引
          <0    ? 失败
********************************************************************/
API_EXPORT TAGID sync_GetTagIdByName(HSYNCBASE hDB, int nBaseId, const char *szTagName, int nLen);

/********************************************************************
功能描述：读取制定ID的测点参数
输入参数：hDB      数据库句柄
        nTagId   测点ID
输出参数：pTag     测点信息
返 回 值：1       成功
        0        失败
********************************************************************/
API_EXPORT int sync_ReadTagParById(HSYNCBASE hDB, TAGID nTagId, TAG_INFO *pTag);

/********************************************************************
功能说明： 按索引写实时数据
输入参数： hDB            数据库实例
         pData          实时数据
         nCount         数据个数
输出参数： 无
返 回 值： 写入数据个数
********************************************************************/
API_EXPORT int sync_WriteRealData(HSYNCBASE hDB, const TAG_DATA *pData, int nCount);

/********************************************************************
功能说明： 指定数据节点按索引写实时数据
输入参数： hDB            数据库实例
         nDataNodeId    数据节点ID
         pData          实时数据
         nCount         数据个数
输出参数： 无
返 回 值： 写入数据个数
********************************************************************/
API_EXPORT int sync_WriteRealData2(HSYNCBASE hDB, int nDataNodeId, const TAG_DATA *pData, int nCount);

/********************************************************************
功能说明： 按编号写实时数据
输入参数： hDB            数据库实例
         pData          实时数据
         nCount         数据个数
输出参数： 无
返 回 值： 写入数据个数
********************************************************************/
API_EXPORT int sync_WriteNoRealData(HSYNCBASE hDB, const TAGNO_DATA *pData, int nCount);

/********************************************************************
功能说明： 写字符串测点实时数据
输入参数： hDB            数据库实例
         pData          实时数据
         nCount         数据个数
输出参数： 无
返 回 值： 写入数据个数
********************************************************************/
API_EXPORT int sync_WriteStrRealData(HSYNCBASE hDB, const TAG_STRDATA *pData, int nCount);

/********************************************************************
功能说明： 查询实时数据
输入参数： hDB            数据库实例
         pTagId         测点ID数组
         nTagCount      测点个数
输出参数： pData          测点数据
返 回 值： 读取数据个数
********************************************************************/
API_EXPORT int sync_ReadRealData(HSYNCBASE hDB, const TAGID *pTagId, TAG_DATA *pData,
    int nTagCount);

/********************************************************************
功能说明： 指定数据节点查询实时数据
输入参数： hDB            数据库实例
         nDataNodeId    数据节点ID
         pTagId         测点ID数组
         nTagCount      测点个数
输出参数： pData          测点数据
返 回 值： 读取数据个数
********************************************************************/
API_EXPORT int sync_ReadRealData2(HSYNCBASE hDB, int nDataNodeId, const TAGID *pTagId, TAG_DATA *pData,
    int nTagCount);

/********************************************************************
功能说明： 查询字符串点实时数据
输入参数： hDB            数据库实例
         pTagId         测点ID数组
         nTagCount      测点个数
输出参数： pData          字符串测点数据
返 回 值： 读取数据个数
********************************************************************/
API_EXPORT int sync_ReadStrRealData(HSYNCBASE hDB, const TAGID *pTagId, TAG_STRDATA *pData,
    int nTagCount);


/********************************************************************
功能说明： 批量查询实时数据，不返回时间
输入参数： hDB            数据库实例
         pTagId         测点ID数组
         nTagCount      测点个数
输出参数： pVal           测点数值
           pQuality       测点质量
返 回 值： 读取数据个数
********************************************************************/
API_EXPORT int sync_ReadBatchRealData(HSYNCBASE hDB, const TAGID *pTagId, TAG_VAL *pVal,
    char *pQuality, int nTagCount);

/********************************************************************
功能说明： 查询并统计数据
输入参数： hDB            数据库实例
         nTagId         测点ID
         pStime         起始时间
         pEtime         结束时间
输出参数： pTotle         统计数据
返 回 值： 1              成功
           0              失败
********************************************************************/
API_EXPORT int sync_QueryTotle(HSYNCBASE hDB, TAGID nTagId, const SC_TIME *pStime,
    const SC_TIME *pEtime, TOTLE_DATA *pTotle);

/********************************************************************
功能说明： 查询某标签时间点阶段时间数据
输入参数： hDB            数据库实例
         nTagId         测点ID
         pStime         起始时间
         pEtime         结束时间
         nStep          查询步长，单位毫秒
         nMode          查询模式，0抽样、1特征值、2原始值、3最大值、
                         4最小值、5平均值
         nMaxCount      最大返回记录数
输出参数： pData          查询结果-历史数据区
返 回 值： >0             成功,实际记录数
         0              失败
********************************************************************/
API_EXPORT int sync_QueryHisData(HSYNCBASE hDB,TAGID  nTagId, const SC_TIME *pStime,
    const SC_TIME *pEtime, int nStep, int nMode, TAG_DATA *pData, int nMaxCount);

/********************************************************************
功能说明： 查询某字符串标签时间点阶段时间数据
输入参数： hDB            数据库实例
         nTagId         测点ID
         pStime         起始时间
         pEtime         结束时间
         nStep          查询步长
         nMode          查询模式，0抽样、1特征值、2原始值、3最大值、
                          4最小值、5平均值
         nMaxCount      最大返回记录数
输出参数： pData          查询结果-历史数据区
返 回 值： >0             成功,实际记录数
         0              失败
********************************************************************/
API_EXPORT int sync_QueryStrHisData(HSYNCBASE hDB,TAGID nTagId, const SC_TIME *pStime,
    const SC_TIME *pEtime, TAG_STRDATA *pData, int nMaxCount);

/********************************************************************
功能说明： 查询开关量某次动作的发生时间
输入参数： hDB            数据库实例
         nTagId         测点ID
         pStime         起始时间
         pEtime         结束时间
         bBoolVal       开关量值
         nValTimes      发生次数序号
输出参数： pTime          发生时间
返 回 值： 1              成功
         0              失败
********************************************************************/
API_EXPORT int sync_QueryBoolTime(HSYNCBASE hDB, TAGID nTagId, const SC_TIME *pStime,
 const SC_TIME *pEtime, unsigned char bBoolVal, int nValTimes, SC_TIME *pTime);

/********************************************************************
功能说明： 修改历史数据
输入参数： hDB            数据库实例
         pData          历史数据区
         nDataCount     记录数
输出参数： 无
返 回 值： >0             成功,实际记录数
         0              失败
********************************************************************/
API_EXPORT int sync_WriteHisData(HSYNCBASE hDB, const TAG_DATA *pData, int nDataCount);

/********************************************************************
功能说明： 通过测点编号获取测点ID
输入参数： nTagNo         测点编号
输出参数： 无
返 回 值： -1             不存在
         >=0            测点ID
********************************************************************/
API_EXPORT TAGID sync_GetTagIdByNo(HSYNCBASE hDB, TAGID nTagNo);

/********************************************************************
功能说明： 获取库ID所在计算机地址
输入参数： hDB            数据库实例
         szBaseName     库名称
         nLen           名称长度
输出参数： 无
返 回 值： -1             不存在
         >=0            测点ID
********************************************************************/
API_EXPORT int sync_GetBaseIP(HSYNCBASE hDB, int BaseId, uint32 *IpAddr,
    int nMaxIpCount);

/********************************************************************
功能说明： 批量插入测点参数
输入参数： hDB            数据库实例
         nBaseId        库ID
         pTag           测点参数
         nCount         测点数
输出参数： pRes           对应每个测点执行结果，0失败 1成功
返 回 值： 1              成功数
         0              失败
********************************************************************/
API_EXPORT int sync_InsertTag(HSYNCBASE hDB, int nBaseId, const TAG_INFO *pTag, uint8 *pRes, int nCount);

/********************************************************************
功能说明： 批量修改测点参数
输入参数： hDB            数据库实例
         nBaseId        库ID
         pTag           测点参数
         nCount         测点数
输出参数： pRes           对应每个测点执行结果
返 回 值： 1              成功数
         0              失败,部分或全部失败
********************************************************************/
API_EXPORT int sync_ModifyTag(HSYNCBASE hDB, int nBaseId, const TAG_INFO *pTag,  uint8 *pRes, int nCount);

/********************************************************************
功能说明： 批量删除测点参数
输入参数： hDB            数据库实例
         nBaseId        库ID
         pTagId         测点ID
         nCount         测点数
输出参数： pRes           对应每个测点执行结果
返 回 值： 1              成功数
         0              失败
********************************************************************/
API_EXPORT int sync_DeleteTag(HSYNCBASE hDB, int nBaseId, const int *pTagId,  uint8 *pRes, int nCount);

/********************************************************************
功能说明： 获取指定测点ID的测点参数
输入参数： hDB            数据库实例
         nTagId         测点ID
输出参数： pTag           测点参数
返 回 值： 1              成功
         0              失败
********************************************************************/
API_EXPORT int sync_GetTagPar(HSYNCBASE hDB, TAGID nTagId, TAG_INFO *pTag);

/********************************************************************
功能说明： 获取指定数据库ID的所属测点个数
输入参数： hDB            数据库实例
         nBaseId        库ID
输出参数： 无
返 回 值： 测点个数
********************************************************************/
API_EXPORT int sync_GetBaseTagCount(HSYNCBASE hDB, int nBaseId);

/********************************************************************
功能说明： 获取库的所有测点参数
输入参数： hDB            数据库实例
         nBaseId        库ID
         nMaxTagCount   最大测点数
输出参数： pTag           测点参数数组
返 回 值： >0             成功,返回测点数
         0              失败
********************************************************************/
API_EXPORT int sync_ReadBaseTagPar(HSYNCBASE hDB, int nBaseId, TAG_INFO *pTag,
    int nMaxTagCount);

/********************************************************************
功能说明： 枚举库测点参数
输入参数： hDB            数据库实例
         nBaseId        库ID
         nMaxTagCount   最大测点数
         szNameMask     测点名称过滤
         szComentMask   测点描述过滤
输出参数： pTag           测点参数数组
返 回 值： >0            成功,返回测点数
          0             失败
********************************************************************/
API_EXPORT int sync_EnumBaseTagPar(HSYNCBASE hDB, int nBaseId, TAG_INFO *pTag,
    int nMaxTagCount, const char *szNameMask, const char *szComentMask);

/********************************************************************
功能说明： 设置库的所有测点参数
输入参数： hDB            数据库实例
         nBaseId        库ID
         pTag           测点参数数组
         nTagCount      测点数
输出参数： 无
返 回 值： 1              成功
         0              失败
********************************************************************/
API_EXPORT int sync_SaveBaseTagPar(HSYNCBASE hDB,int nBaseId,
    const TAG_INFO *pTag, int nTagCount);

/********************************************************************
功能说明： 获取库目录个数
输入参数： hDB            数据库实例
         nBaseId        库ID
输出参数： pDir           测点目录数组
返 回 值： >0            成功,返回目录数
         0              失败
********************************************************************/
API_EXPORT int sync_GetBaseDirCount(HSYNCBASE hDB, int nBaseId);

/********************************************************************
功能说明： 枚举库目录信息
输入参数： hDB            数据库实例
         nBaseId        库ID
         nMaxDirCount   最大目录数
输出参数： pDir           测点目录数组
返 回 值： >0            成功,返回目录数
         0              失败
********************************************************************/
API_EXPORT int sync_EnumBaseDir(HSYNCBASE hDB, int nBaseId,
                 DIR_INFO *pDir, int nMaxDirCount);

/********************************************************************
功能说明： 设置库的所有目录信息
输入参数： hDB            数据库实例
         nBaseId        库ID
         pDir           目录参数数组
         nDirCount      目录数
输出参数： 无
返 回 值： 1              成功
         0              失败
********************************************************************/
API_EXPORT int sync_SaveBaseDir(HSYNCBASE hDB,int nBaseId,
    const DIR_INFO *pDir, int nDirCount);

/********************************************************************
功能说明： 获取库计算公式个数
输入参数： hDB            数据库实例
         nBaseId        库ID
输出参数： pExpress       计算公式
返 回 值： >0            成功,返回计算公式数
         0              失败
********************************************************************/
API_EXPORT int sync_GetBaseExpressCount(HSYNCBASE hDB, int nBaseId);

/********************************************************************
功能说明： 获取库计算公式信息
输入参数： hDB            数据库实例
         nBaseId        库ID
         nExpressId     表达式ID
输出参数： pExpress       计算公式参数
返 回 值： 1              成功
         0              失败
********************************************************************/
API_EXPORT int sync_GetBaseExpress(HSYNCBASE hDB,int nBaseId,int nExpressId,
    EXPRESS_INFO *pExpress);

/********************************************************************
功能说明： 枚举库计算公式信息
输入参数： hDB            数据库实例
         nBaseId        库ID
         nMaxDirCount   最大计算公式数
输出参数： pExpress       计算公式
返 回 值： >0            成功,返回计算公式数
         0              失败
********************************************************************/
API_EXPORT int sync_EnumBaseExpress(HSYNCBASE hDB, int nBaseId,
                 EXPRESS_INFO *pExpress, int nMaxExpressCount);

/********************************************************************
功能说明： 设置库的所有计算公式信息
输入参数： hDB            数据库实例
         nBaseId        库ID
         pExpress       计算公式参数数组
         nExpressCount  计算公式数
输出参数： 无
返 回 值： 1              成功
         0              失败
********************************************************************/
API_EXPORT int sync_SaveBaseExpress(HSYNCBASE hDB,int nBaseId,
    const EXPRESS_INFO *pExpress, int nExpressCount);

/********************************************************************
功能说明： 添加库的所有计算公式信息
输入参数： hDB            数据库实例
         nBaseId        库ID
         pExpress       计算公式参数
输出参数： 无
返 回 值： 1              成功
         0              失败
********************************************************************/
API_EXPORT int sync_InsertBaseExpress(HSYNCBASE hDB,int nBaseId,
    const EXPRESS_INFO *pExpress);

/********************************************************************
功能说明： 修改库的计算公式信息
输入参数： hDB            数据库实例
         nBaseId        库ID
         pExpress       计算公式参数
输出参数： 无
返 回 值： 1              成功
         0              失败
********************************************************************/
API_EXPORT int sync_ModifyBaseExpress(HSYNCBASE hDB,int nBaseId,
    const EXPRESS_INFO *pExpress);

/********************************************************************
功能说明： 删除库的计算公式信息
输入参数： hDB            数据库实例
         nBaseId        库ID
         nExpressId     计算公式ID
输出参数： 无
返 回 值： 1              成功
         0              失败
********************************************************************/
API_EXPORT int sync_DeleteBaseExpress(HSYNCBASE hDB,int nBaseId,
    int nExpressId);

/********************************************************************
功能说明： 获取数据库个数
输入参数： hDB            数据库实例
输出参数： 无
返 回 值： 数据库个数
********************************************************************/
API_EXPORT int sync_GetBaseCount(HSYNCBASE hDB);

/********************************************************************
 功能说明： 读库信息
 输入参数： hDB            数据库实例
          pBase          库参数
          nMaxBaseCount  最大库个数
          szNameMask     库名过滤字符串
 输出参数： 无
 返 回 值： >0             库个数
          0              失败
 ********************************************************************/
API_EXPORT int sync_EnumBasePar(HSYNCBASE hDB, BASE_INFO *pBase,
                                int nMaxBaseCount, const char *szNameMask);

 /********************************************************************
 功能说明： 修改指定库位置的库参数
 输入参数： hDB            数据库实例
          pBase          库参数
 输出参数： 无
 返 回 值： 1              成功
          0              失败
 ********************************************************************/
API_EXPORT int sync_ModifyBasePar(HSYNCBASE hDB, const BASE_INFO *pBase);

 /********************************************************************
 功能说明： 创建库
 输入参数： pBase  - 库信息
 输出参数： 无
返 回 值： 1   成功
          0   失败
 ********************************************************************/
API_EXPORT int sync_CreateBase(HSYNCBASE hDB, const BASE_INFO *pBase);

 /********************************************************************
 功能说明： 删除库
 输入参数： nBaseId        库ID
 输出参数： 无
 返 回 值： 1              成功
           0              失败
 ********************************************************************/
API_EXPORT int sync_DeleteBase(HSYNCBASE hDB, int nBaseId);

 /********************************************************************
 功能说明： 修改历史数据
 输入参数： hDB            数据库实例
          pData          历史数据
          nDataCount     记录数
 输出参数： 无
 返 回 值： 1              成功
          0              失败
 ********************************************************************/
API_EXPORT int sync_ModifyHisData(HSYNCBASE hDB, const TAG_DATA *pData, int nDataCount);

 /********************************************************************
 功能说明： 删除历史数据
 输入参数： hDB            数据库实例
          nTagId         测点ID
          pStime         起始时间
          pEtime         结束时间
 输出参数： 无
 返 回 值： 1              成功
          0              失败
 ********************************************************************/
API_EXPORT int sync_DeleteHisData(HSYNCBASE hDB, TAGID nTagId, const SC_TIME *pStime,
     const SC_TIME *pEtime);

 /********************************************************************
 功能说明： 枚举管理节点信息
 输入参数： hDB            数据库实例
          pNode          节点信息
          nMaxNodeCount  最大库个数
 输出参数： 无
 返 回 值： >0             节点个数
          0               失败
 ********************************************************************/
 API_EXPORT int sync_EnumMNodeInfo(HSYNCBASE hDB, MNODE_INFO *pNode, int nMaxNodeCount);

 /********************************************************************
 功能说明： 修改管理节点信息
 输入参数： hDB            数据库实例
          pNode          节点信息
 输出参数： 无
 返 回 值： 1              成功
          0              失败
 ********************************************************************/
 API_EXPORT int sync_ModifyMNodeInfo(HSYNCBASE hDB, const MNODE_INFO *pNode);

 /********************************************************************
 功能说明： 创建管理节点信息
 输入参数： hDB            数据库实例
          pNode  - 节点信息
 输出参数： 无
 返 回 值： 1       成功
          0       失败
 ********************************************************************/
 API_EXPORT int sync_CreateMNode(HSYNCBASE hDB, const MNODE_INFO *pNode);

 /********************************************************************
 功能说明： 删除管理节点信息
 输入参数： hDB            数据库实例
          nMNodeId       节点ID
 输出参数： 无
 返 回 值： 1              成功
          0               失败
 ********************************************************************/
 API_EXPORT int sync_DeleteMNode(HSYNCBASE hDB, int nMNodeId);

 /********************************************************************
  功能说明： 枚举所有数据节点信息
  输入参数： hDB            数据库实例
           pBase          库参数
           nMaxBaseCount  最大库个数
           szNameMask     测点名称过滤
  输出参数： 无
  返 回 值： >0             库个数
           0              失败
  ********************************************************************/
  API_EXPORT int sync_EnumDNodeInfo(HSYNCBASE hDB, DNODE_INFO *pNode, int nMaxNodeCount);

  /********************************************************************
  功能说明： 修改数据节点信息
  输入参数： hDB            数据库实例
           pNode          数据节点信息
  输出参数： 无
  返 回 值： 1              成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_ModifyDNodeInfo(HSYNCBASE hDB, const DNODE_INFO *pNode);

  /********************************************************************
  功能说明： 创建数据节点
  输入参数： hDB          数据库实例
           pNode        数据节点信息
  输出参数： 无
  返 回 值： 1           成功
           0           失败
  ********************************************************************/
  API_EXPORT int sync_CreateDNode(HSYNCBASE hDB, const DNODE_INFO *pNode);

  /********************************************************************
  功能说明： 删除数据节点
  输入参数： hDB            数据库实例
           nDNodeId       数据节点ID
  输出参数： 无
  返 回 值： 1              成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_DeleteDNode(HSYNCBASE hDB, int nDNodeId);

  /********************************************************************
  功能说明： 获取网关节点个数
  输入参数： hDB            数据库实例
  输出参数： 无
  返 回 值： 网关节点个数
  ********************************************************************/
  API_EXPORT int sync_GetIONodeCount(HSYNCBASE hDB);

  /********************************************************************
   功能说明： 枚举所有网关节点信息
   输入参数： hDB            数据库实例
            pNode          网关节点信息
            nMaxNodeCount  最大节点个数
   输出参数： 无
   返 回 值： >0            网关节点个数
            0              失败
   ********************************************************************/
   API_EXPORT int sync_EnumIONode(HSYNCBASE hDB, IONODE_INFO *pIONode, int nMaxNodeCount);

   /********************************************************************
    功能说明： 获取指定ID网关节点信息
    输入参数： hDB            数据库实例
             nIONodeId      网关节点ID
    输出参数： pNode          网关节点信息
    返 回 值： 1              成功
             0              失败
    ********************************************************************/
   API_EXPORT int sync_GetIONodeInfo(HSYNCBASE hDB, int nIONodeId, IONODE_INFO *pIONode);

   /********************************************************************
   功能说明： 创建网关节点信息
   输入参数： hDB          数据库实例
            pNode        网关节点信息
   输出参数： 无
   返 回 值： 1           成功
            0           失败
   ********************************************************************/
   API_EXPORT int sync_CreateIONode(HSYNCBASE hDB, const IONODE_INFO *pIONode);

   /********************************************************************
   功能说明： 修改网关节点信息
   输入参数： hDB            数据库实例
            pNode          网关节点信息
   输出参数： 无
   返 回 值： 1              成功
            0              失败
   ********************************************************************/
   API_EXPORT int sync_ModifyIONode(HSYNCBASE hDB, const IONODE_INFO *pIONode);

   /********************************************************************
   功能说明： 删除网关节点信息
   输入参数： hDB            数据库实例
            nNodeId        节点信息ID
   输出参数： 无
   返 回 值： 1              成功
            0              失败
   ********************************************************************/
   API_EXPORT int sync_DeleteIONode(HSYNCBASE hDB, int nNodeId);

   /********************************************************************
   功能说明： 保存网关节点信息
   输入参数： hDB            数据库实例
            pNode          网关节点参数
            nCount         网关节点个数
   输出参数： 无
   返 回 值： 1              成功
            0              失败
   ********************************************************************/
   API_EXPORT int sync_SaveAllIONode(HSYNCBASE hDB, const IONODE_INFO *pIONode, int nCount);

   /********************************************************************
   功能说明： 获取网关节点数据库个数
   输入参数： hDB            数据库实例
            nIONodeId      网关节点ID
   输出参数： 无
   返 回 值： 数据库信息个数
   ********************************************************************/
   API_EXPORT int sync_GetIONodeBaseCount(HSYNCBASE hDB, int nIONodeId);

   /********************************************************************
   功能说明： 枚举网关节点数据库信息
   输入参数： hDB            数据库实例
            nIONodeId      网关节点ID
            nMaxBaseCount  最大数据库信息个数
   输出参数： pBase          数据库信息
   返 回 值： >0            数据库接入信息个数
            <=0            失败
   ********************************************************************/
   API_EXPORT int sync_EnumIONodeBase(HSYNCBASE hDB, int nIONodeId, \
                                       BASE_INFO *pBase, int nMaxBaseCount);

   /********************************************************************
   功能说明： 获取计算节点个数
   输入参数： hDB            数据库实例
   输出参数： 无
   返 回 值： 计算节点个数
   ********************************************************************/
   API_EXPORT int sync_GetCalcNodeCount(HSYNCBASE hDB);

   /********************************************************************
    功能说明： 枚举所有计算节点信息
    输入参数： hDB            数据库实例
             pNode          计算节点信息
             nMaxNodeCount  最大节点个数
    输出参数： 无
    返 回 值： >0            节点个数
             0              失败
    ********************************************************************/
    API_EXPORT int sync_EnumCalcNode(HSYNCBASE hDB, CNODE_INFO *pCNode, int nMaxNodeCount);

    /********************************************************************
    功能说明： 创建计算节点信息
    输入参数： hDB          数据库实例
             pNode        计算节点信息
    输出参数： 无
    返 回 值： 1           成功
             0            失败
    ********************************************************************/
    API_EXPORT int sync_CreateCalcNode(HSYNCBASE hDB, const CNODE_INFO *pCNode);

    /********************************************************************
    功能说明： 修改网计算节点信息
    输入参数： hDB            数据库实例
             pNode          计算节点信息
    输出参数： 无
    返 回 值： 1              成功
             0              失败
    ********************************************************************/
    API_EXPORT int sync_ModifyCalcNode(HSYNCBASE hDB, const CNODE_INFO *pCNode);

    /********************************************************************
    功能说明： 删除计算节点信息
    输入参数： hDB            数据库实例
             nNodeId        计算节点ID
    输出参数： 无
    返 回 值： 1              成功
             0              失败
    ********************************************************************/
    API_EXPORT int sync_DeleteCalcNode(HSYNCBASE hDB, int nNodeId);

    /********************************************************************
    功能说明： 保存计算节点信息
    输入参数： hDB            数据库实例
             pNode          计算节点参数
             nCount         计算节点个数
    输出参数： 无
    返 回 值： 1              成功
             0              失败
    ********************************************************************/
    API_EXPORT int sync_SaveAllCalcNode(HSYNCBASE hDB, const CNODE_INFO *pCNode, int nCount);

  /********************************************************************
  功能说明： 获取用户组个数
  输入参数： hDB            数据库实例
  输出参数： 无
  返 回 值： 用户组个数
  ********************************************************************/
  API_EXPORT int sync_GetUserGroupCount(HSYNCBASE hDB);

  /********************************************************************
   功能说明： 枚举所有用户组信息
   输入参数： hDB            数据库实例
            pGroup         用户组信息
            nMaxGroupCount 最大组个数
   输出参数： 无
   返 回 值： >0            用户组个数
            0              失败
   ********************************************************************/
   API_EXPORT int sync_EnumUserGroup(HSYNCBASE hDB, USER_GROUP *pGroup, int nMaxGroupCount);

   /********************************************************************
   功能说明： 创建用户组信息
   输入参数： hDB          数据库实例
            pGroup       用户组信息
   输出参数： 无
   返 回 值： 1           成功
            0           失败
   ********************************************************************/
   API_EXPORT int sync_CreateUserGroup(HSYNCBASE hDB, const USER_GROUP *pGroup);

   /********************************************************************
   功能说明： 修改用户组信息
   输入参数： hDB            数据库实例
            pGroup         用户组信息
   输出参数： 无
   返 回 值： 1              成功
            0              失败
   ********************************************************************/
   API_EXPORT int sync_ModifyUserGroup(HSYNCBASE hDB, const USER_GROUP *pGroup);

   /********************************************************************
   功能说明： 删除用户组信息
   输入参数： hDB            数据库实例
            nGroupId       用户组信息ID
   输出参数： 无
   返 回 值： 1              成功
            0              失败
   ********************************************************************/
   API_EXPORT int sync_DeleteUserGroup(HSYNCBASE hDB, int nGroupId);

  /********************************************************************
  功能说明： 获取用户个数
  输入参数： hDB            数据库实例
  输出参数： 无
  返 回 值： 用户组个数
  ********************************************************************/
  API_EXPORT int sync_GetUserCount(HSYNCBASE hDB);

  /********************************************************************
   功能说明： 枚举所有用户组信息
   输入参数： hDB            数据库实例
            pUser          用户信息
            nMaxUserCount  最大用户个数
   输出参数： 无
   返 回 值： >0             用户个数
            0              失败
   ********************************************************************/
   API_EXPORT int sync_EnumUserInfo(HSYNCBASE hDB, USER_INFO *pUser, int nMaxUserCount);

   /********************************************************************
   功能说明： 创建用户信息
   输入参数： hDB          数据库实例
            pUser        用户信息
   输出参数： 无
   返 回 值： 1           成功
            0            失败
   ********************************************************************/
   API_EXPORT int sync_CreateUserInfo(HSYNCBASE hDB, const USER_INFO *pUser);

   /********************************************************************
   功能说明： 修改用户信息
   输入参数： hDB            数据库实例
            pUser          用户信息
   输出参数： 无
   返 回 值： 1              成功
            0              失败
   ********************************************************************/
   API_EXPORT int sync_ModifyUserInfo(HSYNCBASE hDB, const USER_INFO *pUser);

   /********************************************************************
   功能说明： 删除用户信息
   输入参数： hDB            数据库实例
            nUserId        用户信息ID
   输出参数： 无
   返 回 值： 1              成功
            0              失败
   ********************************************************************/
   API_EXPORT int sync_DeleteUserInfo(HSYNCBASE hDB, int nUserId);

   /********************************************************************
   功能描述： 获取测点所在数据节点ID
   输入参数： nTagId    测点位置
   输出参数： pDNodeId  所在数据节点ID
   返 回 值： >0        成功
            0        失败
   ********************************************************************/
   API_EXPORT int sync_GetDNodeIdByTagId(HSYNCBASE hDB, const TAGID *pTagId, int *pDNodeId, int nCount);

   /********************************************************************
   功能描述： 获取节点状态
   输入参数： pNodeId    节点ID
            nNodeCount 节点个数
            nNodeType  节点类型：0:管理节点，1：数据节点，2：网关节点
   输出参数： pNodeState 节点状态
   返 回 值： 1       成功
            0        失败
   ********************************************************************/
  API_EXPORT  int sync_GetNodeState(HSYNCBASE hDB, const int *pNodeId, \
                                    NODE_STATE *pNodeState, int nNodeCount,int nNodeType);

  /********************************************************************
  功能描述： 通知节点参数同步
  输入参数： bDataNode  是否数据节点 0管理节点 1数据节点
  输出参数： 无
  返 回 值： >0       成功
           0        失败
  ********************************************************************/
  API_EXPORT  int sync_NotifyNodeSyncr(HSYNCBASE hDB, int bDataNode);

  /********************************************************************
  功能描述： 通知节点测点参数同步
  输入参数： bDataNode  是否数据节点 0管理节点 1数据节点
  输出参数： 无
  返 回 值： >0       成功
           0        失败
  ********************************************************************/
  API_EXPORT  int sync_NotifyNodeTagSyncr(HSYNCBASE hDB, int bDataNode);

  /********************************************************************
  功能描述： 获取当前管理节点是否值班状态
  输入参数： 无
  输出参数： 无
  返 回 值： >0       值班
           0        失败
  ********************************************************************/
  API_EXPORT  int sync_GetMNodeIsDuty(HSYNCBASE hDB);

  /********************************************************************
  功能说明： 查询某标签时间点阶段时间记录数
  输入参数： hDB            数据库实例
           nTagId         测点ID
           pStime         起始时间
           pEtime         结束时间
  输出参数： 无
  返 回 值： >0             成功,实际记录数
           0              失败
  ********************************************************************/
  API_EXPORT  int sync_QueryHisDataCount(HSYNCBASE hDB, TAGID  nTagId, const SC_TIME *pStime,
      const SC_TIME *pEtime);

  /********************************************************************
  功能说明： 读取虚拟节点副本组信息
  输入参数： hDB            数据库实例
           pVNodeId       虚拟节点ID
           nVNodeCount    虚拟节点ID个数
  输出参数： pVGroup        虚拟节点组信息
  返 回 值：>0              成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_ReadVNodeGroup(HSYNCBASE hDB, const int *pVNodeId, int nVNodeCount, VNODE_GROUP *pVGroup);

  /********************************************************************
  功能说明： 修改虚拟节点副本组信息
  输入参数： hDB            数据库实例
           pVGroup        虚拟节点组信息
           nVGroupCount    虚拟节点ID个数
  输出参数： 无
  返 回 值：1              成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_WriteVNodeGroup(HSYNCBASE hDB, const VNODE_GROUP *pVGroup, int nVGroupCount);

  /********************************************************************
  功能描述： 获取系统运行模式
  输入参数： hDB            数据库实例
  输出参数： 无
  返 回 值： <0 错误，运行模式 0单机 1主从 2集群
  ********************************************************************/
  API_EXPORT int sync_GetRunMode(HSYNCBASE hDB);

  /********************************************************************
  功能描述：上传历史数据包
  输入参数：pDate      数据包日期
          pDataPack  数据包信息
          nPackCount 数据包个数
          nClientId  客户端ID
  输出参数：无
  返 回 值：>0 - 成功
           0 - 失败
  ********************************************************************/
  API_EXPORT int sync_WriteHisDataPackage(HSYNCBASE hDB, const SC_DATE *pDate, \
                                          const COLLECT_DATAPACK *pDataPack, \
                                          int nPackCount, int nClientId);

  /********************************************************************
  功能描述： 获取数据库参数版本
  输入参数： hDB            数据库实例
           nLen           版本区长度
  输出参数： pVer           参数版本
  返 回 值： >0    成功
            0     失败
  ********************************************************************/
  API_EXPORT int sync_GetDataBaseVer(HSYNCBASE hDB, char *pVer, unsigned int nLen);

  /********************************************************************
  功能说明： 获取批量测点ID
  输入参数： nBaseId        数据库ID
           nTagName       测点名称数组，一个测点名固定65字符
           nTagCount      测点数,单次最大1000个测点
  输出参数： pTagId         测点ID
  返 回 值： >0             成功,实际记录数
           0              失败
  ********************************************************************/
  API_EXPORT int sync_GetBatchTagIdByName(HSYNCBASE hDB, int nBaseId, const TAG_NAME *pTagName,\
                                          TAGID  *pTagId, int nTagCount);

  /********************************************************************
  功能说明： 查询批量测点某时刻历史数据
  输入参数： hDB            数据库实例
           nTagId         测点ID
           pTime          时间
           nTagCount     测点数
  输出参数： pData          查询结果-历史数据区
  返 回 值： >0             成功,实际记录数
           0              失败
  ********************************************************************/
  API_EXPORT int sync_QueryDotHisData(HSYNCBASE hDB,const TAGID  *pTagId, const SC_TIME *pTime, \
                                         TAG_DATA *pData, int nTagCount);

  /********************************************************************
  功能说明： 查询某标签时间点阶段时间变化数据
  输入参数： hDB            数据库实例
           nTagId         测点ID
           pStime         起始时间
           pEtime         结束时间
           nMaxCount      最大返回记录数
  输出参数： pData          查询结果-历史数据区
  返 回 值： >0             成功,实际记录数
           0              失败
  ********************************************************************/
  API_EXPORT int sync_QueryChangeHisData(HSYNCBASE hDB,TAGID  nTagId, const SC_TIME *pStime,
      const SC_TIME *pEtime, TAG_DATA *pData, int nMaxCount);

  /********************************************************************
  功能说明： 查询某标签时间点阶段时间最大值
  输入参数： hDB            数据库实例
           nTagId         测点ID
           pStime         起始时间
           pEtime         结束时间
           dLimitMax      限定最大值
           dLimitMin      限定最小值
           bValLimit      限定使能，高4位最大值限定使能，低4位最小值限定使能
  输出参数： pData          查询结果
  返 回 值： 1             成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_GetHisMaxVal(HSYNCBASE hDB,TAGID  nTagId, const SC_TIME *pStime,
      const SC_TIME *pEtime, double dLimitMax, double dLimitMin, uint8 bValLimit, TAG_DATA *pData);

  /********************************************************************
  功能说明： 查询某标签时间点阶段时间最小值
  输入参数： hDB            数据库实例
           nTagId         测点ID
           pStime         起始时间
           pEtime         结束时间
           dLimitMax      限定最大值
           dLimitMin      限定最小值
           bValLimit      限定使能，高4位最大值限定使能，低4位最小值限定使能
  输出参数： pData          查询结果
  返 回 值： 1             成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_GetHisMinVal(HSYNCBASE hDB,TAGID  nTagId, const SC_TIME *pStime,
      const SC_TIME *pEtime, double dLimitMax, double dLimitMin, uint8 bValLimit, TAG_DATA *pData);

  /********************************************************************
  功能说明： 查询某标签时间点阶段时间平均值
  输入参数： hDB            数据库实例
           nTagId         测点ID
           pStime         起始时间
           pEtime         结束时间
           dLimitMax      限定最大值
           dLimitMin      限定最小值
           bValLimit      限定使能，高4位最大值限定使能，低4位最小值限定使能
  输出参数： pData          查询结果
  返 回 值： 1             成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_GetHisAvgVal(HSYNCBASE hDB,TAGID  nTagId, const SC_TIME *pStime,
      const SC_TIME *pEtime, double dLimitMax, double dLimitMin, uint8 bValLimit, double *pData);

  /********************************************************************
  功能说明： 查询某标签时间点阶段时间累加和
  输入参数： hDB            数据库实例
           nTagId         测点ID
           pStime         起始时间
           pEtime         结束时间
           dLimitMax      限定最大值
           dLimitMin      限定最小值
           bValLimit      限定使能，高4位最大值限定使能，低4位最小值限定使能
  输出参数： pData          查询结果
  返 回 值： 1             成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_GetHisSumVal(HSYNCBASE hDB,TAGID  nTagId, const SC_TIME *pStime,
      const SC_TIME *pEtime, double dLimitMax, double dLimitMin, uint8 bValLimit, double *pData);

  /********************************************************************
  功能描述： 设置节点状态
  输入参数： hDB        数据库实例
           pNodeId    节点ID
           pNodeState 节点状态
           nNodeType  节点类型：0:管理节点，1：数据节点，2：网关节点
  输出参数： 无
  返 回 值： 1       成功
           0        失败
  ********************************************************************/
 API_EXPORT  int sync_SetNodeState(HSYNCBASE hDB, int nNodeId, const NODE_STATE *pNodeState, int nNodeType);

  /********************************************************************
  功能说明： 获取服务器时间
  输入参数： hDB            数据库实例
  输出参数： pTime          时间
  返 回 值： 1             成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_GetServerTime(HSYNCBASE hDB, SC_TIME *pTime);

  //功能说明： 获取版本信息
  API_EXPORT unsigned int sciyonVersion(char *version, unsigned int len);



  //---------------------------------------  网关UUID  --------------------------------------//
  /********************************************************************
  功能说明： 获取库网关UUID个数
  输入参数： hDB            数据库实例
           nBaseId        库ID
  输出参数： pUUID          网关UUID
  返 回 值： >0            成功,返回计算公式数
           0              失败
  ********************************************************************/
  API_EXPORT int sync_GetBaseUUIDCount(HSYNCBASE hDB, int nBaseId);

  /********************************************************************
  功能说明： 获取库网关UUID信息
  输入参数： hDB            数据库实例
           nBaseId        库ID
           nNodeId        网关节点ID
  输出参数： pUUID          网关UUID
  返 回 值： 1              成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_GetBaseUUID(HSYNCBASE hDB, int nBaseId, int nNodeId, UUID_INFO *pUUID);

  /********************************************************************
  功能说明： 枚举库网关UUID信息
  输入参数： hDB            数据库实例
           nBaseId        库ID
           nMaxUUIDCount  最大网关UUID数
  输出参数： pUUID          网关UUID
  返 回 值： >0            成功,返回网关UUID数
           0              失败
  ********************************************************************/
  API_EXPORT int sync_EnumBaseUUID(HSYNCBASE hDB, int nBaseId,
                   UUID_INFO *pUUID, int nMaxUUIDCount);

  /********************************************************************
  功能说明： 设置库的所有网关UUID信息
  输入参数： hDB            数据库实例
           nBaseId        库ID
           pUUID          网关UUID参数数组
           nUUIDCount     网关UUID数
  输出参数： 无
  返 回 值： 1              成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_SaveBaseUUID(HSYNCBASE hDB, int nBaseId,
      const UUID_INFO *pUUID, int nUUIDCount);

  /********************************************************************
  功能说明： 添加库的所有网关UUID信息
  输入参数： hDB            数据库实例
           nBaseId        库ID
           pUUID          网关UUID参数
  输出参数： 无
  返 回 值： 1              成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_InsertBaseUUID(HSYNCBASE hDB, int nBaseId, const UUID_INFO *pUUID);

  /********************************************************************
  功能说明： 修改库的网关UUID信息
  输入参数： hDB            数据库实例
           nBaseId        库ID
           pUUID          网关UUID参数
  输出参数： 无
  返 回 值： 1              成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_ModifyBaseUUID(HSYNCBASE hDB, int nBaseId, const UUID_INFO *pUUID);

  /********************************************************************
  功能说明： 删除库的网关UUID信息
  输入参数： hDB            数据库实例
           nBaseId        库ID
           nNodeId        节点ID
  输出参数： 无
  返 回 值： 1              成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_DeleteBaseUUID(HSYNCBASE hDB, int nBaseId, int nNodeId);

  /********************************************************************
  功能说明： 获取数据库网关服务驱动个数
  输入参数： hDB            数据库实例
           nBaseId        库ID
           nDriverType    驱动类型 0网关服务驱动、1采集驱动
  输出参数： 无
  返 回 值： 驱动个数
  ********************************************************************/
  API_EXPORT int sync_GetBaseDriverCount(HSYNCBASE hDB, int nBaseId, int nDriverType);

  /********************************************************************
  功能说明： 枚举数据库网关服务驱动信息
  输入参数： hDB            数据库实例
           nBaseId        库ID
           nDriverType    驱动类型 0网关服务驱动、1采集驱动
           nMaxDrvCount   最大驱动个数
  输出参数： pDrv           驱动名称，每个驱动名长度16字节
  返 回 值： 驱动个数
  ********************************************************************/
  API_EXPORT int sync_EnumBaseDriver(HSYNCBASE hDB, int nBaseId, int nDriverType, char *pDrv, int nMaxDrvCount);

  /********************************************************************
  功能说明： 保存数据库网关服务驱动信息
  输入参数： hDB            数据库实例
           nBaseId        库ID
           nDriverType    驱动类型 0网关服务驱动、1采集驱动
           pDrv           驱动名称，每个驱动名长度16字节
           nDrvCount      最大驱动个数
  输出参数： 无
  返 回 值： >0             成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_SaveBaseDriver(HSYNCBASE hDB, int nBaseId, int nDriverType, const char *pDrv, int nDrvCount);

  /********************************************************************
  功能说明： 设置网络通讯超时时间
  输入参数： hDB            数据库实例
  输出参数： nTimeOutSec    超时时间(秒数)
  返 回 值： 1             成功
           0              失败
  ********************************************************************/
  API_EXPORT int sync_SetNetworkTimeOut(HSYNCBASE hDB, int nTimeOutSec);

  //------------------------------------ web 与网关服务通信接口 ------------------------------------------//
  /********************************************************************
  功能说明： 反写控制数据
  输入参数： hDB            数据库实例
           pData          实时数据(ID方式)
           nCount         数据个数,最大50
  输出参数： 无
  返 回 值： >0 - 成功个数
           0 - 失败
  ********************************************************************/
  API_EXPORT int sync_IOWriteGWControlData(HSYNCBASE hDB,const TAG_WRITEDATA *pData, int nCount);


  /********************************************************************
  功能说明： 向网关设备写二进制测点数据(包括字符串)
  输入参数： BaseTagId      数据测点ID,高4字节数据库ID，低4字节测点ID
           nDataType      数据类型 8:DT_STR,10 bin
           pData          数据内容，
           nLen           数据长度
  输出参数： 无
  返 回 值： 1 - 成功
           0 - 失败
  ********************************************************************/
  API_EXPORT int sync_IOWriteGWBinData(HSYNCBASE hDB, TAGID BaseTagId, \
                                        int nDataType, const char *pData, int nLen);

  /********************************************************************
  功能说明： 透明通道-读网关设备数据(设备UUID)，与ioNetFreeMemData接口一一对应使用
  输入参数： hDB            数据库实例
           nBaseId        数据库ID
           szUUID         设备UUID
           pSendBuf       发送数据区
           nSendLen       发送数据长度
  输出参数： pRecvBuf       接收数据区，由本接口申请内存，用完须业务层调用ioNetFreeMemData接口释放
  返 回 值： >0 - 成功
           0 - 失败
  ********************************************************************/
  API_EXPORT int sync_IOReadGWDataByUUID(HSYNCBASE hDB, int nBaseId, const char *szUUID, \
                    const char *pSendBuf, int nSendLen, MEM_DATA *pRecvBuf);

  /********************************************************************
  功能说明： 透明通道-写网关设备数据(设备UUID)
  输入参数： hDB            数据库实例
           nBaseId        数据库ID
           szUUID         设备UUID
           pData          数据
           nLen           数据长度
  输出参数： 无
  返 回 值： >0 - 成功
           0 - 失败
  ********************************************************************/
  API_EXPORT int sync_IOWriteGWDataByUUID(HSYNCBASE hDB, int nBaseId, const char *szUUID, const char *pBuf, int nLen);

  /********************************************************************
  功能说明： 透明通道-读网关设备数据(数据库网关节点ID)，与ioNetFreeMemData接口一一对应使用
  输入参数： hDB            数据库实例
           nGWDevID       网关设备ID，高4字节数据库ID，低4字节网关节点ID
           pSendBuf       发送数据区
           nSendLen       发送数据长度
  输出参数： pRecvBuf       接收数据区，由本接口申请内存，，用完须业务层调用ioNetFreeMemData接口释放
  返 回 值： >0 - 成功
           0 - 失败
  ********************************************************************/
  API_EXPORT int sync_IOReadGWDeviceData(HSYNCBASE hDB, uint64 nGWDevID, \
                    const char *pSendBuf, int nSendLen, MEM_DATA *pRecvBuf);

  /********************************************************************
  功能说明： 透明通道-写网关设备数据(数据库网关节点ID)
  输入参数： hDB            数据库实例
           nGWDevID       网关设备ID，高4字节数据库ID，低4字节网关节点ID
           pData          数据
           nLen           数据长度
  输出参数： 无
  返 回 值： >0 - 成功
           0 - 失败
  ********************************************************************/
  API_EXPORT int sync_IOWriteGWDeviceData(HSYNCBASE hDB, uint64 nGWDevID, const char *pBuf, int nLen);

  /********************************************************************
  功能说明： 批量获取数据库网关设备在线状态
  输入参数： hDB            数据库实例
           pGWDevID        网关设备ID数组，元素高4字节数据库ID，低4字节网关节点ID
           nCount          最大返回设备数
  输出参数： pGWDevStat      返回网关设备状态数组，0离线， 1在线
  返 回 值： >0 - 成功
           0 - 失败
  ********************************************************************/
  API_EXPORT int sync_IOGetBaseGWDevStat(HSYNCBASE hDB, const uint64 *pGWDevID, unsigned char *pGWDevStat,  int nCount);

  /********************************************************************
  功能说明： 枚举数据库网关设备状态信息
  输入参数： hDB            数据库实例
           nBaseId        数据库ID
           nMaxDevCount   最大返回设备数
  输出参数： pDev           返回网关设备信息
  返 回 值： >0 - 成功，个数
           0 - 失败
  ********************************************************************/
  API_EXPORT int sync_IOEnumBaseGWDev(HSYNCBASE hDB, int nBaseId, GW_DEVICE *pDev,  int nMaxDevCount);

  /********************************************************************
  功能说明： 获取在线网关设备个数
  输入参数： hDB            数据库实例
           nBaseId        数据库ID, -1表示所有
           nGWType        网关设备类型，0：全部，1：未授权，2：已授权
  输出参数： 无
  返 回 值： >0            成功，个数
           0              失败
  ********************************************************************/
  API_EXPORT int sync_IOGetOnlineGWDevCount(HSYNCBASE hDB, int nBaseId, int nGWType);

  /********************************************************************
  功能说明： 枚举在线网关设备信息
  输入参数： hDB            数据库实例
           nBaseId        数据库ID, -1表示所有
           nGWType        网关设备类型，0：全部，1：未授权，2：已授权
           nMaxDevCount   最大返回设备数
  输出参数： pDev           返回网关设备信息
  返 回 值： >0 - 成功，个数
           0 - 失败
  ********************************************************************/
  API_EXPORT int sync_IOEnumOnlineGWDev(HSYNCBASE hDB, int nBaseId, int nGWType, ONLINE_GW *pDev,  int nMaxDevCount);

  /********************************************************************
  功能说明： 授权网关设备
  输入参数： hDB            数据库实例
           nDriverId      来源接入驱动ID
           nClientId      来源客户端ID
           nBaseId        授权数据库ID
           nNodeId        授权数据库网关节点ID
  输出参数： 无
  返 回 值： 1 - 成功
           0 - 失败
  ********************************************************************/
  API_EXPORT int sync_IOAuthGWDev(HSYNCBASE hDB, int nDriverId, int nClientId,  int nBaseId, int nNodeId);

  /********************************************************************
  功能说明： 释放数据区内存
  输入参数： pDataBuf       释放数据区内存
  输出参数： 无
  返 回 值： 无
  ********************************************************************/
  API_EXPORT void sync_IOFreeMemData(MEM_DATA *pDataBuf);

#endif // SYNCBASEAPI60_H
